<template>
  <template v-if="renderLocalIcon">
    <svg :class="svgClass" aria-hidden="true">
      <use :xlink:href="iconName" :fill="color" />
    </svg>
  </template>
  <template v-else>
    <Icon v-if="iconClass" :icon="iconClass" />
  </template>
</template>

<script setup lang="ts">
import { propTypes } from '@/utils/propTypes';
import { Icon } from '@iconify/vue';

const props = defineProps({
  iconClass: propTypes.string.def(''),
  localIconClass: propTypes.string.def(''),
  className: propTypes.string.def(''),
  color: propTypes.string.def('')
});

const iconName = computed(() => {
  if (props.localIconClass.startsWith('local-icon-')) {
    return `#icon-${props.localIconClass.replace('local-icon-', '')}`;
  }
  return `#icon-${props.localIconClass}`;
});

const renderLocalIcon = computed(() => props.localIconClass || !props.iconClass);

const svgClass = computed(() => {
  if (props.className) {
    return `svg-icon ${props.className}`;
  }
  return 'svg-icon';
});
</script>

<style lang="scss" scoped>
.sub-el-icon,
.nav-icon {
  display: inline-block;
  font-size: 15px;
  margin-right: 12px;
  position: relative;
}

.svg-icon {
  width: 1em;
  height: 1em;
  position: relative;
  fill: currentColor;
  vertical-align: -2px;
}
</style>
